'''
# 形式一：导入模块
import module1[, module2[,... moduleN]
## 示例
import sys
# 形式二：从模块中导入一个指定的部分到当前命名空间中
from modname import name1[, name2[, ... nameN]]
## 示例
from fib import fibonacci
# 形式三：把一个模块的所有内容全都导入到当前的命名空间，不建议使用
from modname import *
'''
#!/usr/bin/python3    可以让代码在Unix/Linux/Mac上运行
# -*- coding: UTF-8 -*-    使用标准utf-8编码
' a test module '   #模块注释
__author__ = 'dfq'  #作者

import sys       #导入sys模块

def test():
    args = sys.argv   #表示命令行参数，第一个参数永远是该.py文件的名称
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')
        
if __name__=='__main__':
    test()

'''
当我们在命令行运行模块文件时，Python解释器把一个特殊变量__name__置为__main__。

'''


print("--------------------------------")
print("查看指定模块的所有功能")
import math
print(dir(math))


'''
作用域
正常的模块都是公开的，可以直接使用，我们称之为public；
而以_x或者__x开头的是非公开的，称为private，不应该被直接访问。
其中类似__xxx__这样的变量是特殊变量，有着特殊意义，例如__author__，__name__。
'''

def _fun1():
    pass

def _fun2():
    pass

def myfunc(type):
    if type == 'fun1':
        _fun1()
    elif type == 'fun2':
        _fun2()
    else:
        print('error')
        
#作用域总结：外部不需要引用的函数全部定义成private，只有外部需要引用的函数才定义为public。